home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / sbin / mkxf86config.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  2006-01-09  |  6KB  |  181 lines

  1. #!/bin/bash
  2.  
  3. source /etc/profile
  4. source /sbin/functions.sh
  5.  
  6. TMPFILE="/tmp/mkxf86config-$$"
  7. MONITORTMP="$TMPFILE-monitor"
  8.  
  9. rm -f "$TMPFILE" "$MONITORTMP"
  10.  
  11. # Reread boot command line; echo last parameter's argument or return false.
  12. CMDLINE=$(cat /proc/cmdline)
  13.  
  14. # Read in what hwsetup has found for X
  15. [ -f /etc/sysconfig/xserver ] && . /etc/sysconfig/xserver
  16.  
  17. WHEEL='s|"PS/2"|"auto"\
  18. Option          "ZAxisMapping"          "4 5"|g;'
  19.  
  20. # Read in changes
  21. [ -f /etc/sysconfig/gentoo ] && . /etc/sysconfig/gentoo
  22.  
  23. # Read default keyboard from config file.
  24. # There seems to be no reliable autoprobe possible.
  25. [ -f /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard
  26.  
  27. # Create mouse link and insert a mouse default type into xorg.conf
  28. # if not already done by hwsetup
  29. [ -f /etc/sysconfig/mouse ] && . /etc/sysconfig/mouse
  30. [ -e /dev/mouse ] || ln -sf /dev/ttyS0 /dev/mouse
  31. # PROTO="${XMOUSETYPE:-Auto}"
  32. PROTO="${XMOUSETYPE:-Microsoft}"
  33. NOEMU=""
  34. [ "${XEMU3}" = "no" ] && NOEMU='s|^.*Emulate3|# No 2 -> 3 Button emulation|g'
  35. DEADKEYS=""
  36. [ "$XKEYBOARD" = "de" ] || DEADKEYS='s|^.*nodeadkeys.*$||g;'
  37. if [ -n "XMODULE" ]; then
  38. # Check for Framebuffer X-Modules and initialize framebuffer module
  39. case "$XMODULE" in
  40. pvr2fb) modprobe "$XMODULE" >/dev/null 2>&1 ; XMODULE="fbdev"; ;;
  41. esac
  42. fi
  43.  
  44. # We used to use ddcxinfo-knoppix for monitor information, now we will just let
  45. # X choose for itself.  This will probably break older machines.
  46. #MONITOR="$(ddcxinfo-knoppix -monitor)"
  47. MONITOR='Section "Monitor"
  48.     Identifier   "Monitor0"
  49.     HorizSync    28.0 - 96.0
  50.     VertRefresh  50.0 - 75.0
  51. EndSection'
  52. RC="$?"
  53. COMPLETE="$(awk '/EndSection/{print}' <<EOF
  54. $MONITOR
  55. EOF
  56. )"
  57.  
  58. # Extract values for display
  59. MODEL="$(awk '/^[     ]*ModelName/{print;exit}'<<EOF
  60. $MONITOR
  61. EOF
  62. )"
  63.  
  64. MODEL="${MODEL#*\"}"
  65. MODEL="${MODEL%\"*}"
  66.  
  67. HREFRESH="$(awk '/^[     ]*HorizSync/{print $2 $3 $4; exit}'<<EOF
  68. $MONITOR
  69. EOF
  70. )"
  71.  
  72. VREFRESH="$(awk '/^[     ]*VertRefresh/{print $2 $3 $4; exit}'<<EOF
  73. $MONITOR
  74. EOF
  75. )"
  76.  
  77. # Build line of allowed modes
  78. #RAWMODES=$(ddcxinfo-knoppix -monitor | grep ModeLine | sed -r "s/.*\"([0-9]+x[0-9]+)\".*/\1/g"| sort -rg | uniq | xargs echo | sed -r "s/([0-9]+x[0-9]+)/\"\1\"/g")
  79. RAWMODES="\"1024x768\" \"800x600\" \"640x480\""
  80. MODES="Modes $RAWMODES"
  81.  
  82. # We need to check this because serial mice have long timeouts
  83. SERIALMOUSE="$(ls -l1 /dev/mouse* 2>/dev/null | awk '/ttyS/{print $NF ; exit 0}')"
  84. if [ -n "$SERIALMOUSE" ]; then
  85. SERIALMOUSE="s|/dev/ttyS0|$SERIALMOUSE|g;"
  86. else
  87. SERIALMOUSE='s|^.*InputDevice.*"Serial Mouse".*$|# Serial Mouse not detected|g;'
  88. fi
  89.  
  90. # PS/2 bug: Some keyboards are incorrectly used as mice in XFree. :-(
  91. PSMOUSE="$(ls -l1 /dev/mouse* 2>/dev/null | awk '/psaux/{print $NF ; exit 0}')"
  92. if [ -n "$PSMOUSE" ]; then
  93. PSMOUSE=""
  94. else
  95. PSMOUSE='s|^.*InputDevice.*"PS/2 Mouse".*$|# PS/2 Mouse not detected|g;'
  96. fi
  97.  
  98. case "$(cat /proc/modules)" in *usbmouse*|*mousedev*|*hid\ *)
  99. USBMOUSE="" ;;
  100. *)
  101. USBMOUSE='s|^.*InputDevice.*"USB Mouse".*$|# USB Mouse not detected|g;';;
  102. esac
  103.  
  104. # Kernel 2.6 reports psaux via /dev/input/mice like USB
  105. case "$KVER" in 2.6.*)
  106. if [ -z "$PSMOUSE" ]; then
  107. PSMOUSE='s|^.*InputDevice.*"PS/2 Mouse".*$|# PS/2 Mouse using /dev/input/mice in Kernel 2.6|g;'
  108. USBMOUSE=""
  109. fi
  110. ;;
  111. esac
  112.  
  113. if [ -a /proc/bus/input/devices ]; then
  114.     CHECK=$(cat /proc/bus/input/devices | grep -i synaptics | wc -l)
  115.     if [ $CHECK -gt 0 ]; then
  116.         modprobe evdev
  117.         SYNDEV=/dev/input/$(cat /proc/bus/input/devices | egrep -i -A 5 "^N: .*synaptics.*" | grep Handlers | sed -r "s/.*(event[0-9]+).*/\1/g")
  118.         SYNMOUSE=""
  119.     else
  120.         SYNMOUSE='s|^.*InputDevice.*"Synaptics".*$|#No Synaptics touchpad found|g;'
  121.     fi
  122. fi
  123.  
  124. # Write Monitor data now
  125. rm -f "$MONITORTMP"
  126. echo "$MONITOR" >"$MONITORTMP"
  127.  
  128. # VMWare special handling
  129. VMWARE=""
  130. if [ "$XMODULE" = "vmware" ]; then
  131. VMWARE='s|^.*BusID.*PCI.*$|BusID "PCI:0:15:0"|g;'
  132. DEPTH='s|DefaultColorDepth |# DefaultColorDepth |g;'
  133. fi
  134.  
  135. # Do NOT use a default colordepth setting if we are using the "fbdev" module
  136. if [ "$XMODULE" = "fbdev" ]; then
  137. DEPTH='s|DefaultColorDepth |# DefaultColorDepth |g;'
  138. fi
  139.  
  140. # These drivers need the sw_cursor option
  141. SWCURSOR=""
  142. case "$XMODULE" in ati|radeon|nv|trident) SWCURSOR='s|^.*#Option.*"sw_cursor".*$|Option "sw_cursor"|g;';; esac
  143.  
  144. # We must use NoPM, because some machines freeze if Power management is being activated.
  145.  
  146. NOPM=""
  147. DPMS=""
  148. #checkbootparam noapm && NOPM='Option    "NoPM"    "true"' || DPMS='Option    "DPMS"    "true"'
  149.  
  150. sed -e 's|@@PROTOCOL@@|'"$PROTO"'|g;'"$NOEMU" \
  151.     -e '/@@MONITOR@@/r '"$MONITORTMP" \
  152.     -e 's|@@MONITOR@@||g' \
  153.     -e 's|@@NOPM@@|'"$NOPM"'|g' \
  154.     -e 's|@@XMODULE@@|'"$XMODULE"'|g;'"$VMWARE""$SERIALMOUSE""$USBMOUSE""$PSMOUSE""$SWCURSOR""$WHEEL""$SYNMOUSE" \
  155.     -e 's|@@SYNDEV@@|'"$SYNDEV"'|g' \
  156.     -e 's|@@MODES@@|'"$MODES"'|g;'"$DEPTH" \
  157.     -e 's|"XkbLayout" *"[^"]*"|"XkbLayout" "'"$XKEYBOARD"'"|g;'"$DEADKEYS" \
  158.     /etc/X11/xorg.conf.in >/etc/X11/xorg.conf
  159.  
  160. if [ -n "$DPMS" ]; then
  161.     if [ -f /etc/X11/xorg.conf ]; then
  162.         sed -e 's|Identifier[    ]*"Monitor0"|Identifier        "Monitor0"\
  163.     '"$DPMS"'|g' /etc/X11/xorg.conf >/etc/X11/xorg.conf.new
  164.         mv -f /etc/X11/xorg.conf.new /etc/X11/xorg.conf
  165.     fi
  166. fi
  167.  
  168. rm -f "$TMPFILE" "$MONITORTMP" 2>/dev/null
  169.  
  170. # Print info about selected X-Server
  171. [ -n "$XDESC" ] || XDESC="(yet) unknown card"
  172. echo -n " ${GOOD}Video is"
  173. [ -n "$XDESC" ] && echo -n " ${HILITE}$XDESC${NORMAL},"
  174. echo -n " using ${GOOD}${XSERVER:-generic VESA}"
  175. [ -n "$XMODULE" ] && echo -n "(${HILITE}$XMODULE${NORMAL})"
  176. echo " Server${NORMAL}"
  177. echo -n " ${GOOD}Monitor is ${HILITE}${MODEL:-Generic Monitor}${NORMAL}"
  178. [ -n "$HREFRESH" -a -n "$VREFRESH" ] && echo "${GOOD}, ${GOOD}H:${HILITE}${HREFRESH}kHz${GOOD}, V:${HILITE}${VREFRESH}Hz${NORMAL}" || echo ""
  179. [ -n "$XVREFRESH" ] && echo " ${GOOD}Trying specified vrefresh rate of ${HILITE}${XVREFRESH}Hz.${NORMAL}"
  180. [ -n "$MODES" ] && echo " ${GOOD}Using Modes ${HILITE}${MODES##Modes }${NORMAL}"
  181.